package com.itgungnir.designpattern.proxy.dynamicproxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class TimeInvocationHandler implements InvocationHandler {
	private Object target;

	public TimeInvocationHandler(Object target) {
		this.target = target;
	}

	/**
	 * 参数：<br/>
	 * proxy：被代理的对象<br/>
	 * method：被代理对象的方法<br/>
	 * args：方法中的参数<br/>
	 * </p>
	 * 返回值：<br/>
	 * Object：被代理对象的方法的返回值
	 */
	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		// 业务逻辑
		long startTime = System.currentTimeMillis();
		System.out.println("汽车开始行驶......");
		// 调用被代理对象中的方法
		method.invoke(target, args);
		// 业务逻辑
		long endTime = System.currentTimeMillis();
		System.out.println("汽车停止行驶，共行驶了" + (endTime - startTime) + "毫秒");
		return null;
	}
}